package flyweighgt_pattern.ex2;

/**
 * Potion 接口表示一种享元角色，定义了药水的共同行为。
 * 享元模式的目的是通过共享对象来减少内存的使用，避免重复创建相似的对象。
 * 本接口的具体实现代表了不同类型的药水，每种药水可以被多个炼金术士共享。
 *
 * @author 申书航
 * @version 1.0
 */
public interface Potion {

    /**
     * 炼金术士喝下药水的方法，可能影响炼金术士的状态。
     *
     * @param alchemist 需要饮用药水的炼金术士
     */
    void drink(Alchemist alchemist);

    /**
     * 将药水出售的方法，设定药水的售价。
     *
     * @param price 药水的售价
     */
    void sell(int price);
}
